/**
 * 移除HTML标签
 * @param html 待处理的HTML字符串
 * @return 返回移除HTML标签后的字符串
 */
export function removeHtmlTags(html: string): string {
  if (!html) {
    return '';
  }
  // 替换 HTML 标签
  let textWithoutTags = html.replace(/<[^>]*>/g, '');
  // 替换连续空格为一个空格
  textWithoutTags = textWithoutTags.replace(/\s{2,}/g, ' ');
  // 去除字符串两端空格
  textWithoutTags = textWithoutTags.trim();
  return textWithoutTags;
}

/**
 * 将逗号分隔的字符串转换为数组，如果已经是数组则直接返回
 * @param value - 要转换的值（字符串或字符串数组）
 * @returns 字符串数组
 */
export function toArray(value: string | string[]): string[] {
  if (Array.isArray(value)) {
    return value;
  }
  return value.split(',').map((item) => item.trim());
}

/**
 * 使用正则表达式判断字符串是否为有效的 HTTP 或 HTTPS 协议网址
 * @param urlString - 要判断的字符串
 * @returns 如果是有效的网址，返回 true，否则返回 false
 */
export function isValidHTTPURLWithRegex(urlString: string): boolean {
  const urlPattern = new RegExp(
    '^(https?:\\/\\/)' + // 必须包含 http 或 https 协议
      '((([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)\\.)+[a-zA-Z]{2,}|' + // 域名
      '((\\d{1,3}\\.){3}\\d{1,3}))' + // 或 IP 地址
      '(\\:\\d+)?' + // 端口
      '(\\/[-a-zA-Z0-9@:%._\\+~#=]*)*' + // 路径
      '(\\?[;&a-zA-Z0-9%_\\.=]*)?' + // 查询字符串
      '(\\#[-a-zA-Z0-9_]*)?$',
  ); // 片段标识符

  return urlPattern.test(urlString);
}
